package com.google.code.cana.pojo.venda;

import java.util.Date;

import com.google.code.cana.pojo.insumos.Produto;

/**
 * 
 * @author Samuel de Barros Florentino
 * 
 */
public class ItemVenda implements Comparable<ItemVenda> {

	private Produto produto;

	private Double quantidade;

	private Date dataCadastro;

	/**
	 * Retorn o itemVenda como uma String
	 */
	public String toString() {
		return "Item de Venda: " + produto.getNome() + " " + quantidade ;	
	}

	/**
	 * @return the dataCadastro
	 */
	public Date getDataCadastro() {
		return dataCadastro;
	}

	/**
	 * @param dataCadastro
	 *            the dataCadastro to set
	 */
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	/**
	 * @return the produto
	 */
	public Produto getProduto() {
		return produto;
	}

	/**
	 * @param produto
	 *            the produto to set
	 */
	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	/**
	 * @return the quantidade
	 */
	public Double getQuantidade() {
		return quantidade;
	}

	/**
	 * @param quantidade
	 *            the quantidade to set
	 */
	public void setQuantidade(Double quantidade) {
		this.quantidade = quantidade;
	}

	/**
	 * Compara um objeto com o outro
	 */
	public int compareTo(ItemVenda o) {
		return getProduto().compareTo(o.getProduto());
	}

	/**
	 * Verifica se o conteudo do objeto eh o mesmo
	 */
	public boolean equals(Object o) {
		ItemVenda outro = null;
		try {
			outro = (ItemVenda) o;
		} catch (ClassCastException e) {
			return false;
		}
		return compareTo(outro) == 0;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return produto.hashCode();
	}

	public Double getSubtotal() {
		return this.quantidade * this.produto.getPrecoVenda();
	}

}
